package utils

import (
	"clouds.lgb24kcs.cn/global"
	"errors"
	"fmt"
	"github.com/go-redis/redis/v7"
	"time"
)

func ExampleNewClient() *redis.Client {
	client := redis.NewClient(&redis.Options{
		Addr:     global.APP.Configuration.Redis.Addr + ":" + global.APP.Configuration.Redis.Port,
		Password: global.APP.Configuration.Redis.Password, // no password set
		DB:       global.APP.Configuration.Redis.DB,       // use default DB
	})

	_, err := client.Ping().Result()
	if err != nil {
		global.APP.Log.Error(fmt.Sprintf("redis连接失败：%s", err.Error()))

		panic(err)
	}
	return client
}
func Set(key string, value any) error {
	client := global.APP.Redis
	_, err := client.Set(key, value, 5*time.Minute).Result()
	if err != nil {
		return err
	}
	return nil
}

func Get(key string) (string, error) {
	client := global.APP.Redis
	result, err := client.Get(key).Result()
	if errors.Is(err, redis.Nil) { // go-redis 库提供了一个 redis.Nil 错误来表示 Key 不存在的错误。

		//if err == redis.Nil {
		return "", err
	} else if err != nil {
		// 异常错误信息
		return "", err
	} else {
		return result, nil

	}
}

func SetHash(key, username string, value interface{}) error {
	client := global.APP.Redis
	err := client.HSet(key, username, value).Err()
	if err != nil {
		return err
	} else {
		return nil
	}
}

func HGetAll(key string) (map[string]string, error) {
	client := global.APP.Redis
	result, err := client.HGetAll(key).Result()
	if errors.Is(err, redis.Nil) { // go-redis 库提供了一个 redis.Nil 错误来表示 Key 不存在的错误。
		return nil, errors.New("redis存储空")
	} else if err != nil {
		// 异常错误信息
		return nil, err
	} else {
		return result, nil

	}
}
